import request from '@/utils/request'

/**
 * 获取Cluster列表
 * @param {Object} query - 查询参数（如分页、筛选条件等）
 * @returns {Promise} - 返回请求的Promise对象
 */
export function getClusterList(query) {
  return request({
    url: '/cluster/list', // 对应后端的 /cluster/list 接口
    method: 'get', // 对应后端的 GET 请求
    params: query // GET请求参数通过params传递
  })
}

/**
 * 创建Cluster
 * @param {string} cluster - 要创建的Cluster名称
 * @param {File} file - 上传的配置文件
 * @param {Object} data - 额外的创建参数（如标签、注释等）
 * @returns {Promise} - 返回请求的Promise对象
 */
export function createCluster(clusterName, file, data = {}) {
  const formData = new FormData()
  // 添加文件
  if (file) {
    formData.append('clusterName', clusterName)
    formData.append('file', file)
  }
  // 添加其他数据
  Object.keys(data).forEach(key => {
    formData.append(key, data[key])
  })

  return request({
    url: `/cluster/`,
    method: 'post',
    data: formData,
    headers: {
      'Content-Type': 'multipart/form-data'
    }
  })
}

/**
 * 删除Cluster
 * @param {string} id - 要删除的Cluster的id
 * @returns {Promise} - 返回请求的Promise对象
 */
export function deleteCluster(id) {
  return request({
    url: `/cluster/${id}`, // 对应后端的 /cluster/:id 接口
    method: 'delete' // 对应后端的 DELETE 请求
  })
}

/**
 * 切换Cluster
 * @param {string} clusterName - 要切换的Cluster的名称
 * @returns {Promise} - 返回请求的Promise对象
 */
export function changeCluster(clusterName) {
  return request({
    url: `/cluster/${clusterName}`, // 对应后端的 /cluster/:clusterName 接口
    method: 'get' // 对应后端的 GET 请求
  })
}

